/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package co.dzgroup.votacion.modelo;

import co.dzgroup.votacion.util.Formato;
import java.sql.Time;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Clase para manejar la información de la elección
 * @author Lucho
 */
public class Eleccion {

    private Integer eleccionId;
    private String nombre;
    private Boolean estado;
    private Date fechaEleccion;
    private Time horaInicio;
    private Time horaFin;
    private String descripcion;
    private List<TipoEleccion> tiposEleccion;
    private List<Candidato> candidatos;

    /**
     * Constructor por defecto de la clase
     */
    public Eleccion() {
        tiposEleccion=new ArrayList<TipoEleccion>();
        candidatos=new ArrayList<Candidato>();
    }

    /**
     * Constructor por defecto de la clase
     * @param eleccionId
     * @param nombre
     * @param estado
     * @param fechaEleccion
     * @param horaInicio
     * @param horaFin
     * @param descripcion
     * @param tiposEleccion
     * @param candidatos
     */
    public Eleccion(Integer eleccionId, String nombre, Boolean estado, Date fechaEleccion,
            Time horaInicio, Time horaFin, String descripcion, List<TipoEleccion> tiposEleccion,
            List<Candidato> candidatos) {
        this.eleccionId = eleccionId;
        this.nombre = nombre;
        this.estado = estado;
        this.fechaEleccion = fechaEleccion;
        this.horaInicio = horaInicio;
        this.horaFin = horaFin;
        this.descripcion = descripcion;
        this.tiposEleccion = tiposEleccion;
        this.candidatos = candidatos;
    }

    public Eleccion(Integer eleccionId, String nombre, Boolean estado, Date fechaEleccion,
            Time horaInicio, Time horaFin, String descripcion) {
        this.eleccionId = eleccionId;
        this.nombre = nombre;
        this.estado = estado;
        this.fechaEleccion = fechaEleccion;
        this.horaInicio = horaInicio;
        this.horaFin = horaFin;
        this.descripcion = descripcion;
    }

    /**
     * Método pra verificar si existe el tipo de elección ingresado como parametro,
     * en el listado de tipos de elección de la elección.
     * @param tipoEleccionId
     * @return
     */
    public boolean existeTipoEleccion(Integer tipoEleccionId){
        boolean resultado=false;
        if(!this.tiposEleccion.isEmpty()){
            for(TipoEleccion tipoEleccion:tiposEleccion){
                if(tipoEleccion.getTipoEleccionId()==tipoEleccionId){
                    resultado=true;
                    break;
                }
            }
        }
        return resultado;
    }

    /**
     * Método para crear una cadena con los codigos del tipo de elección
     * separados por comas. Por ejemplo: 1,2,3
     * @return
     */
    public String getCadenaTiposEleccion(){
        String tipos="";
        if(!this.tiposEleccion.isEmpty()){
            for(TipoEleccion tipoEleccion:tiposEleccion){
                if(tipos.equals("")){
                    tipos=""+tipoEleccion.getTipoEleccionId();
                }else{
                  tipos=tipos+","+tipoEleccion.getTipoEleccionId();
                }
            }
        }
        System.out.println("TI:"+tipos);
        return tipos;
    }

    public List<Candidato> getCandidatos() {
        return candidatos;
    }

    public void setCandidatos(List<Candidato> candidatos) {
        this.candidatos = candidatos;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Integer getEleccionId() {
        return eleccionId;
    }

    public void setEleccionId(Integer eleccionId) {
        this.eleccionId = eleccionId;
    }

    public Boolean getEstado() {
        return estado;
    }

    public void setEstado(Boolean estado) {
        this.estado = estado;
    }

    public Date getFechaEleccion() {
        return fechaEleccion;
    }

    public void setFechaEleccion(Date fechaEleccion) {
        this.fechaEleccion = fechaEleccion;
    }

    public Time getHoraFin() {
        return horaFin;
    }

    public void setHoraFin(Time horaFin) {
        this.horaFin = horaFin;
    }

    public Time getHoraInicio() {
        return horaInicio;
    }

    public void setHoraInicio(Time horaInicio) {
        this.horaInicio = horaInicio;
    }

    public String getNombre() {
        return Formato.properCase(nombre);
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public List<TipoEleccion> getTiposEleccion() {
        return tiposEleccion;
    }

    public void setTiposEleccion(List<TipoEleccion> tiposEleccion) {
        this.tiposEleccion = tiposEleccion;
    }

}
